package com.lagou.server;

import com.lagou.model.Question;
import com.lagou.model.User;

import java.io.*;
import java.util.LinkedList;
import java.util.List;

/**
 * 编程实现数据的存取
 */
public class ServerDao {

    // 声明成员变量
    private List<User> list;




    /**
     * 编程实现管理员账号和密码的校验并将结果返回出去
     * @param user
     * @return
     */
    public boolean serverManagerCheck(User user) {
        if ("admin".equals(user.getUserName()) && "123456".equals(user.getPassword())) {
            return true;
        }
        return false;
    }

    /**
     * 编程实现管理员账号和密码的校验并将结果返回出去
     * @param user
     * @return
     */
    public boolean serverStudentCheck(User user) throws IOException, ClassNotFoundException {
        // 调用成员方法读取所有学员信息并打印
        //list = sd.readUserFile();
        System.out.println("读取到的学员账户信息有：");
        for(User tu: list) {
            System.out.println(tu);
            if (tu.getUserName().equals(user.getUserName()) && tu.getPassword().equals(user.getPassword())) {
                return true;
            }
        }
        return false;
    }



    /**
     * 自定义构造方法实现成员变量的初始化
     * @param list
     */
    public ServerDao(List<User> list) {
        this.list = list;
    }


    public ServerDao() {
    }

    /**
     * 自定义成员方法实现将文件中所有学员账户信息读取到List集合中并返回
     * @throws IOException
     * @throws FileNotFoundException
     * @throws ClassNotFoundException
     */
    @SuppressWarnings("unchecked")
    public List<User> readUserFile() throws FileNotFoundException, IOException, ClassNotFoundException {
        // 判断文件是否存在，只有文件存在且有内容时才需要读取文件中的信息
        File f1 = new File("./user.txt");
        if(f1.exists() && f1.length() > 48) {
            ObjectInputStream ois = new ObjectInputStream(
                    new FileInputStream(f1));
            list = (List<User>) ois.readObject();
            ois.close();
        }
        return list;
    }

    /**
     * 自定义成员方法实现将集合中的所有学员账户信息写入到文件中
     * @throws IOException
     * @throws FileNotFoundException
     */
    public void writeUserFile() throws FileNotFoundException, IOException {
        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream("./user.txt"));
        oos.writeObject(list);
        //oos.close();
        System.out.println("保存所有学员账户信息成功！");
    }
}
